설계를 언제 할까
설계를 언제 할까?
The loud debates in software design seem to be about what to design. … These what debates hide a more fundamental disagreement among software designers: when? Here’s a caricature of the poles of this disagreement:
- Speculative design: We know what we want to do next, so let’s design for it today. It will be cheaper to design now. Besides, once the software is in production we will never have the chance to design, so let’s pile it all in today.
- Reactive design: Features are all anyone cares about, so let’s design as little as we can today so we can get back to features. Only when features become nearly impossible to add will we begrudgingly improve the design, and then only just enough to get back to features.
I aspire to answer the question of “when?” with “somewhere in the middle.” When we observe that a certain class of features is hard to add, we design until the pressure is relieved.
—Preface, Tidy first? A personal exercise in empirical software design